package cron

import (
	"cloudops/src/config"
	"sync"
)

// 定义执行计划任务的对象
type CronManager struct {
	Sc *config.ServerConfig
	// =true 代表上次已经同步完了 ，这次可以：担心上次没执行完，新的就开始了：数据冲突：最多只有1个同步任务
	EcsLastSyncFinished bool
	ElbLastSyncFinished bool
	RdsLastSyncFinished bool
	sync.RWMutex
}

// 同步ECS状态设置
func (cm *CronManager) SetEcsSynced(fin bool) {
	cm.Lock()
	defer cm.Unlock()
	cm.EcsLastSyncFinished = fin
}

// 同步状态获取
func (cm *CronManager) GetEcsSynced() bool {
	cm.RLock()
	defer cm.RUnlock()
	return cm.EcsLastSyncFinished
}

// 同步ELB状态设置
func (cm *CronManager) SetElbSynced(fin bool) {
	cm.Lock()
	defer cm.Unlock()
	cm.ElbLastSyncFinished = fin
}

// 同步RDS状态获取
func (cm *CronManager) GetRdsSynced() bool {
	cm.RLock()
	defer cm.RUnlock()
	return cm.RdsLastSyncFinished
}

// 同步RDS状态设置
func (cm *CronManager) SetRdsSynced(fin bool) {
	cm.Lock()
	defer cm.Unlock()
	cm.RdsLastSyncFinished = fin
}

// 同步ELB状态获取
func (cm *CronManager) GetElbSynced() bool {
	cm.RLock()
	defer cm.RUnlock()
	return cm.ElbLastSyncFinished
}

// 初始化执行计划任务的对象
func NewCronManager(sc *config.ServerConfig) *CronManager {
	return &CronManager{

		Sc: sc,
		// 初始化的时候需要 设置同步状态为 true，不然永远不会开始同步
		EcsLastSyncFinished: true,
		ElbLastSyncFinished: true,
		RdsLastSyncFinished: true,
	}

}
